// Copyright 2022 The Dawn & Tint Authors
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this
//    list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice,
//    this list of conditions and the following disclaimer in the documentation
//    and/or other materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its
//    contributors may be used to endorse or promote products derived from
//    this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

////////////////////////////////////////////////////////////////////////////////
// File generated by 'tools/src/cmd/gen' using the template:
//   src/tint/lang/core/builtin_type_bench.cc.tmpl
//
// To regenerate run: './tools/run gen'
//
//                       Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////

#include "src/tint/lang/core/builtin_type.h"

#include <array>

#include "benchmark/benchmark.h"

namespace tint::core {
namespace {

void BuiltinTypeParser(::benchmark::State& state) {
    const char* kStrings[] = {
        "__atomic_compareexchangeccresult_i32",
        "__atoml3_compare_exchane_resulti2",
        "__atomic_compare_Vxchange_result_i32",
        "__atomic_compare_exchange_result_i32",
        "__atomic_com1are_exchange_result_i32",
        "__atomic_qqompare_exchage_resulJ_i32",
        "__atllmic_compare_exchange_result_i377",
        "__atomicppcompareqqexchange_reslt_uHH2",
        "__atomi_compare_exchavge_cesult_3",
        "__atomic_copare_eGbhange_result_u32",
        "__atomic_compare_exchange_result_u32",
        "__atomic_coiipare_exvhange_result_u32",
        "__atomic_compaWWe_excha8ge_result_u32",
        "__atomic_comparxxMexchage_result_u32",
        "__fXexp_resgglt_bstract",
        "V_frexp_resul_abuXrct",
        "__frexp_result_abstra3t",
        "__frexp_result_abstract",
        "__frexp_resElt_abstract",
        "__frexTT_Pesult_abstract",
        "__frexp_resulxxddabstrct",
        "44_frexp_result_f16",
        "_VVfrexp_resulSS_f16",
        "__frexp_reRult_fR6",
        "__frexp_result_f16",
        "__frFxp_re9ut_f16",
        "__frep_result_f16",
        "__frRRVH_rOOsultf16",
        "__frepyresult_f32",
        "_nrr77rexp_result_fGll",
        "__4rex00_result_f32",
        "__frexp_result_f32",
        "__oorep_reult_f2",
        "__fzzexp_result_3",
        "__iir11x_respplt_f3",
        "__frexp_resuXXt_vec2_abstract",
        "55n99frexp_result_vec2_abstraIIt",
        "__fHHexpSSaresrrlt_Yec2_abstract",
        "__frexp_result_vec2_abstract",
        "__freHp_resutve2_abstkkact",
        "jfrexpgresult_veRR2_abstrac",
        "__frexp_resul_vec2_absbrac",
        "_jfrexp_result_vec2_f16",
        "__frexp_resultvec2_f16",
        "__freqpresultvec2_f16",
        "__frexp_result_vec2_f16",
        "__frexNN_result_vec_f16",
        "__frexp_resvvlt_vc2_f1",
        "__frexp_esult_vec2_f1QQ",
        "__rerp_result_ffec2_f2",
        "__frexp_result_vjc2_f32",
        "__frewwp_reul2_vec2_NN82",
        "__frexp_result_vec2_f32",
        "__frexpresult_vec2_f32",
        "__frexp_result_vec2_frr2",
        "_Gfrexp_result_vec2_f32",
        "__frexp_resulFF_vec3_abstract",
        "_frexp_resultvec3_Estract",
        "__fexp_result_vec3_abstrract",
        "__frexp_result_vec3_abstract",
        "frexp_result_vec3_abstract",
        "D_rexp_resXlt_veJJ3_abstract",
        "_frexp_resut_v8c_abstract",
        "_frexp_rsl1k_vec3_f16",
        "__frexp_reslt_vec3_f16",
        "__frexJ_reult_vec3_f16",
        "__frexp_result_vec3_f16",
        "c_frexp_result_vec3_f16",
        "__frexp_result_vec3Of16",
        "___frexp_reKKultvvvec3_f1tt",
        "8_frexp_reult_vxxc3_f32",
        "_frexp_resul___veFqqf32",
        "_qqfrexp_result_vec_f32",
        "__frexp_result_vec3_f32",
        "33_fOexp_result_ve3_6632",
        "__oorexQQ_rttsult_ve639f32",
        "__rexp_result_vec3_f662",
        "__frexp_reszzlt_Oc4xabstrac66",
        "__frexp_resyylt_vec4_abstract",
        "__frexp_resut_vecHH_aZsracZ",
        "__frexp_result_vec4_abstract",
        "_WWfrex44_resulq_vec4_astract",
        "__frexp_rsult_veOO4_abstract",
        "__frexp_resultoovc4_abstYct",
        "_frexp_esultvec4_f16",
        "__Frexp_result_ec4_f16",
        "__frewp_resut_vec4_f16",
        "__frexp_result_vec4_f16",
        "__frexp_reslt_veK4fG16",
        "__fqexp_result_veKK4_f16",
        "_F3rexp_result_vec4_f1mm",
        "__frexp_result_ec4_f32",
        "__frexp_result_qe4_f32",
        "__frbbxp_result_vec4_b2",
        "__frexp_result_vec4_f32",
        "__frexp_reslt_iiec4_f2",
        "__frexO_resulq_vec4_f32",
        "__frexp_resulTT_vec4vvf32",
        "__modf_resulFF_abstract",
        "fm00df_rePult_abstraQt",
        "__modf_result_abstPact",
        "__modf_result_abstract",
        "_modf_result_abstssac77",
        "__modf_resulC_bbRbstract",
        "__modf_result_abstracXX",
        "__OOofCCresuOOt_f16",
        "_smodf_resuutfL6",
        "__modX_result_f16",
        "__modf_result_f16",
        "__modf_reult_f16",
        "__modf_resqqO16",
        "__modf22result_f16",
        "__modf_X0eszzlt_fy",
        "_VVmPf_result_f3i",
        "__monnfCresultf32",
        "__modf_result_f32",
        "_HHAmodf_resqltf32",
        "__modf_resut_f32",
        "__modresuft_f3KK",
        "__modlPrsultggvec2_astract",
        "__odf_result_vec2_abstract",
        "__mocTf_result_vNc2_abstra4t",
        "__modf_result_vec2_abstract",
        "__modf77result_vec2_plbtract",
        "__mdf_resultNNvec2zabstgact",
        "_modf_bbesult_vuuc2_abtraXXt",
        "__modf_esult_vec2_f16",
        "__mQdf_esuKt_vec_8816",
        "q_m9dfresult_vec2_f16",
        "__modf_result_vec2_f16",
        "__11odf_result_vec2_f16",
        "_iimodf_result_vF222f16",
        "_77modf_result_vec2f16",
        "__odfNNr2sult_vec2_f32",
        "__modf_rVVsult_vec2_f32",
        "__modf_Fesult_vewW2_f311",
        "__modf_result_vec2_f32",
        "__modf_rwwsult_vec_f32",
        "__modf_result_Dec2_f32",
        "__modf_result_ec2_f3K",
        "__modf_resul1PP_vech_abstfact",
        "__modf_result_vec_abstract",
        "__YYodf_result_vec3_abstract",
        "__modf_result_vec3_abstract",
        "__mHHdfresult_kkec3_abstract",
        "__modf_result_vec3rrabstract",
        "__modf_ssesulWW_vec_abstract",
        "__mYdf_reslt_vec3_f16",
        "q_modLrfsult_vec3_f16",
        "uu_vvo22f_rfsult_ec3_f16",
        "__modf_result_vec3_f16",
        "__mdf_reslt_vec3_f16",
        "__modfYYresult_ve3f16",
        "__modfEr77sult_vec3_yY16",
        "__odf_desuMot_vec3_f32",
        "__mMMf_result_vec3_f32",
        "__modf_result_vec3_f355",
        "__modf_result_vec3_f32",
        "__modf_rest_vec3Nf32",
        "_m33df_result_Oec3_f32",
        "__modf_re3ult_vec3_f32",
        "__momf_esult_Iec4_abstract",
        "__modf_resultrvec4_absnnracK",
        "__modf_eslt_ve4_absXXact",
        "__modf_result_vec4_abstract",
        "__modf_rsult_pLLI4_abstract",
        "_modf_resflt_vec4_bstract",
        "_Ymodf_resultURDec4_abtract",
        "__hodf_result_vec4_f16",
        "__moquu_rslt_vec4_f1II",
        "__modf_result_vecH_f16",
        "__modf_result_vec4_f16",
        "__oQQf_resultvvvc4_f16",
        "__modf_eeult66ec4_f16",
        "_Omodf_r7sut_vec4_W16",
        "__modf_DDes0lt_v55c4_f32",
        "__modf_rIIsult_Hec4_f32",
        "_modf_result_vec4_f32",
        "__modf_result_vec4_f32",
        "_modf_result_vrc4_f32",
        "_lmodf_result_vec4_f32",
        "tt_modfGeslt_vec4_fJJ2",
        "__paked_vyc3",
        "_packed_vec3",
        "__pIIckedBBvec3",
        "__packed_vec3",
        "__8aTTked_v33c3",
        "dnnUUpackeSSY_vec3",
        "xC_5ackedZvec3",
        "kkrraq",
        "a005iy",
        "anIIray",
        "array",
        "ccrW",
        "rKK",
        "arr66y",
        "aKKoPi",
        "atxxmc",
        "atoqic",
        "atomic",
        "rMoyyiSS",
        "utom",
        "oic",
        "5oFFl",
        "borz4l",
        "WW",
        "bool",
        "ZJJCoX",
        "boPP",
        "bocl",
        "fll66",
        "91yy",
        "f1KK",
        "f16",
        "x_",
        "K",
        "kVz",
        "K3S",
        "f2",
        "fVV",
        "f32",
        "IAU2",
        "j",
        "Y4",
        "i2",
        "1xx",
        "ccm",
        "i32",
        "iJJ",
        "UfCDD",
        "i3g",
        "inCCt_atachmen",
        "iput_attachment",
        "input__attachmenI",
        "input_attachment",
        "inpt_PttttaNment",
        "input_attddc3ment",
        "inKutyyattahment",
        "mtx",
        "mat03nn",
        "mvtnCuuK",
        "mat2x2",
        "lXatx2",
        "matppxo",
        "maw2x2",
        "matguum",
        "mt2ma2",
        "Tat2xZRRf",
        "mat2x2f",
        "ma8T2xOf",
        "m0at2x2f",
        "mBBt2x2f",
        "at2ppM",
        "matOO2h",
        "mGG2x2G",
        "mat2x2h",
        "mHHt2x11h",
        "eat2x6Fh",
        "atx2h",
        "mKl2ii3",
        "at2x3",
        "9IIat2x3",
        "mat2x3",
        "ma2x3",
        "hat2x3",
        "zzPt2xll",
        "t3f",
        "mtffxqqf",
        "mtJJx3dd",
        "mat2x3f",
        "mzz2X3f",
        "matx32",
        "maN2yy3f",
        "mt2O3",
        "uZtrx3h",
        "latdde23h",
        "mat2x3h",
        "matVVh",
        "1IIt2x3",
        "mat2xbh",
        "t7i4",
        "maio2x4",
        "a5x4",
        "mat2x4",
        "St2x4",
        "m22tx",
        "maC7G4",
        "maff284f",
        "t2x4f",
        "SSatJJx4f",
        "mat2x4f",
        "atx9f",
        "maJJbbTT4f",
        "66a2xf",
        "ut2x466",
        "aW2x4h",
        "mtx4h",
        "mat2x4h",
        "mOt2x4",
        "THat2xBB",
        "maRR2xh",
        "VLLa30",
        "at3KOO",
        "awg3x2",
        "mat3x2",
        "maLhhp",
        "iitEx2",
        "at3x2",
        "UUa3882",
        "rrvvt3x2f",
        "m3xwmm",
        "mat3x2f",
        "j443x2f",
        "matXx2f",
        "mat8x2f",
        "mvEE3x2h",
        "mai93zz",
        "mQQJJnxGGh",
        "mat3x2h",
        "mass3x2h",
        "matKxPh",
        "mat3tth",
        "atx3",
        "maMM3x3",
        "mJ0t3x3",
        "mat3x3",
        "V38",
        "hggat3x3",
        "maf3x3",
        "matQ7x3f",
        "mat3YYf",
        "mak3x3",
        "mat3x3f",
        "man3x2",
        "ma3FFf",
        "uGGtIUPP3f",
        "EEvFx3h",
        "ddtBBDDeh",
        "m55tMccE3",
        "mat3x3h",
        "aKKx3",
        "mat3x3R",
        "maDx39",
        "mt3x4",
        "aIt34",
        "mat3x77",
        "mat3x4",
        "matIx4",
        "matd4",
        "mt3x4",
        "mtt4f",
        "ma3XX3x4f",
        "Eat34f",
        "mat3x4f",
        "maXX3x4",
        "matxBx4f",
        "m3x4f",
        "mat3x466",
        "matxv0",
        "txh",
        "mat3x4h",
        "mpt3xh",
        "at114h",
        "EaJ3yBBh",
        "mqIm4x2",
        "ma4F2",
        "aY4x2",
        "mat4x2",
        "matDHh2",
        "24H2",
        "m4x2",
        "matx2f",
        "matx2f",
        "matddx2f",
        "mat4x2f",
        "Oat4x2f",
        "atBbb2",
        "m004x2f",
        "mat4xhh",
        "mgYtx2h",
        "mat4O2h",
        "mat4x2h",
        "ah4xh",
        "fpaEEx2h",
        "mavx2h",
        "at4zz3",
        "mat4x",
        "OiiJt4",
        "mat4x3",
        "mGt4xf",
        "mTT224x3",
        "lat4x3",
        "bat4x3f",
        "BBatx3f",
        "PPIXt4S3f",
        "mat4x3f",
        "mjjt4x3f",
        "_at4xccf",
        "ax6z4xSSf",
        "a4xG",
        "mx44N3v",
        "atAAx00p",
        "mat4x3h",
        "eeytyh",
        "mabWWx0h",
        "ttatMMxmh",
        "4d4",
        "mav_x",
        "mVt4xEE",
        "mat4x4",
        "m4t4x4",
        "mVVtgxX",
        "oat4V4",
        "ma4x4f",
        "KKattxf",
        "G4xf",
        "mat4x4f",
        "ma4x4",
        "mad4x4f",
        "CCat4xPtf",
        "matx4",
        "m5t4x4h",
        "m9jtffx4h",
        "mat4x4h",
        "matRvxXXh",
        "ctx4h",
        "XX8t5x4",
        "t",
        "ppcc",
        "vtr",
        "ptr",
        "EESS",
        "p",
        "",
        "saplwwr",
        "sa99plddr",
        "99amplP",
        "sampler",
        "saKKler",
        "smDDooeM",
        "smlei",
        "samler_comparqon",
        "samplercmparis0LLn",
        "snvvpler_com66arison",
        "sampler_comparison",
        "samplen_comparison",
        "samlercompeerixxon",
        "sONNpler_comparCCson",
        "txture_1d",
        "tex4uae_1d",
        "extuNNe_1NN",
        "texture_1d",
        "texture1d",
        "tuxtre1d",
        "textErYYS1A",
        "tex0ure_2d",
        "texaaure_2d",
        "tqqmmtur_d",
        "texture_2d",
        "textue_2d",
        "tUUxtureE",
        "tKKture_Dd",
        "0exture_2d_a__rat",
        "tpturl_2_Array",
        "txture_2M_array",
        "texture_2d_array",
        "BBexture_2d_array",
        "nnxtbbre_2_a99ray",
        "texturEE2d_aAAray",
        "tex66ur5_3d",
        "tHxture_3d",
        "teHHuxe_3d",
        "texture_3d",
        "tzxturny_0d",
        "teture_3d",
        "Hexture3k",
        "textur_cubc",
        "trrxtoorecbe",
        "textreJJcub",
        "texture_cube",
        "0Cxture_cube",
        "99eFtureAAcbx",
        "textcre_cube",
        "Sexture_cube_array",
        "txtureBBcobe_arras",
        "teture_cube_array",
        "texture_cube_array",
        "texturemmebe_array",
        "tQQturPP_cube_arragg",
        "textr_cubBrray",
        "teKKNllre_eth_2d",
        "texture_ephrr2d",
        "rppture_depth_2d",
        "texture_depth_2d",
        "texture_deyPth_2d",
        "extue_dZZpth_ccd",
        "texure_depth_2",
        "textu00e_depth_2d_array",
        "tPJxture_BBsspth_2d_arry",
        "teffture_wwepth_2dJJarra",
        "texture_depth_2d_array",
        "Iextu1e_dpth_2d_arraXX",
        "extur_depth2_arry",
        "texture_depth_2_array",
        "tuxtreKKdepth_cube",
        "44edture_depmh_ube",
        "pexture_deoth_cube",
        "texture_depth_cube",
        "textre_djphhhNNcHHbe",
        "textu33e_depth_EuwwUU",
        "texture_dethuucbe",
        "excurrr_depddh_cube_array",
        "2exturePPttpth_cube_array",
        "texture_depthwwcub1sarray",
        "texture_depth_cube_array",
        "nnexture_depthcc11be_array",
        "texture_depthcube_array",
        "texture_depth_cube_arry",
        "texture_deIth_multsa66pleaaSS2d",
        "texture_depth_mDltisamEEld_2d",
        "texture_Iepth_multiccamRleV_2d",
        "texture_depth_multisampled_2d",
        "texture_dephmultisampled92d",
        "texthraa_depth_multsampled_2d",
        "texture_depth_SultisaLLped_2d",
        "txfure_ertermma",
        "teVturem4xqerna",
        "textu___extenal",
        "texture_external",
        "texurQ_eternal",
        "textureddetRErnal",
        "text9re_extenal",
        "t0xtre_multisamCCe_2d",
        "texure_zulisampled_2d",
        "texccure_multisampled_2d",
        "texture_multisampled_2d",
        "tOxture_mu_tisampled2QQ",
        "exture_multsampledtt2d",
        "textCCEe_mult33samzzled_ppd",
        "textudde_storaghh_1d",
        "_etur77_66torage_1d",
        "texture_storaPe_1d",
        "texture_storage_1d",
        "twxture_storage_1d",
        "textur_straguu_1",
        "texture_storaXXe_6d",
        "textRRr_sorag_2d",
        "textrestVVrag12d",
        "texture_HHtorGGge_2d",
        "texture_storage_2d",
        "tFFxture_storMge_7d",
        "texture_storage_d",
        "3xTugge_stoage_2d",
        "text_rP_Qtorage12d_arrKKy",
        "tExture_strage_2d_array",
        "extMre_storage_d_array",
        "texture_storage_2d_array",
        "texturGGst77ragX_2d_SSrray",
        "textturFF_storae_2d_arraK",
        "textuoe_storage_2dssZarrUUy",
        "texturestorage_3d",
        "telture_storage_3d",
        "texture_htorage_3d",
        "texture_storage_3d",
        "texturTTKstorage_d",
        "texturww_storagee3",
        "textureKsjjragvv_3d",
        "Y2",
        "EEI",
        "u3QQ",
        "u32",
        "P",
        "H3ff",
        "u3n",
        "Fc66",
        "ssech",
        "llFec",
        "vec2",
        "jj20",
        "veg2",
        "vce",
        "ffc2f",
        "ve",
        "ve2f",
        "vec2f",
        "vqc2f",
        "AAe",
        "ec2f",
        "vec2j",
        "ZZec2h",
        "PPecII2",
        "vec2h",
        "ZZec2h",
        "vnnc2h",
        "HekkZ222",
        "ec2",
        "RcNQQ",
        "eDi",
        "vec2i",
        "s3c2cu",
        "vRR2i",
        "vc2JJl",
        "MMu",
        "v66T7",
        "vQQcJu",
        "vec2u",
        "Auc2",
        "ve2",
        "yeq3",
        "vxxc3",
        "rr",
        "e993",
        "vec3",
        "ec3",
        "vlH",
        "ec",
        "uec3",
        "vc3f",
        "EEtmec3f",
        "vec3f",
        "vec",
        "ec3rr",
        "xc3f",
        "vezz",
        "vec3e",
        "uc3Zp",
        "vec3h",
        "00uc7TT",
        "vvJJ",
        "vecQh",
        "ve3R",
        "e",
        "veprPP",
        "vec3i",
        "xxeDD88i",
        "lldmYYqqi",
        "vFFc__",
        "rrNNc3u",
        "leM3u",
        "c3",
        "vec3u",
        "xlc3u",
        "ec3u",
        "ae44u",
        "WWeG4",
        "vjjc",
        "vjjc4",
        "vec4",
        "vj4",
        "ve4",
        "99ec4",
        "vyVV4f",
        "ec4xZ",
        "v33vvf",
        "vec4f",
        "vecs9",
        "veF4",
        "uec4f",
        "eIKK",
        "ve4J",
        "vSSCCXXh",
        "vec4h",
        "JecWW6ZZ",
        "ecd5",
        "vBBcBU",
        "JJ0c411",
        "vectti",
        "vttc",
        "vec4i",
        "veL4i",
        "v1c4i",
        "veww4i",
        "ece",
        "vc4u",
        "vec4NN",
        "vec4u",
        "vUlRR__u",
        "vecHu",
        "vrCC4u",
    };
    for (auto _ : state) {
        for (auto* str : kStrings) {
            auto result = ParseBuiltinType(str);
            benchmark::DoNotOptimize(result);
        }
    }
}  // NOLINT(readability/fn_size)

BENCHMARK(BuiltinTypeParser);

}  // namespace
}  // namespace tint::core
